package staticandfinal;

//final修饰类不可以被继承
//final修饰方法不可以被重写
//final修饰属性不可以被改变,不可以有set方法
//final修饰属性要么定义初始值，要么有构造方法。（初始化时确定final的值）
public final class Person {
    private  String name;
    //final类型要么定义初始值，要么有构造方法。
    private final String age;

    public Person(String age) {
        this.age = age;
    }

    public Person(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='"  + '\'' +
                '}';
    }

    public void setName(String name) {
        this.name = name;
    }
    //final修饰的变量，不会有set方法
    public String getAge() {
        return age;
    }
//    public void setAge(String age) {
//        this.age=age;
//    }

    static {
        //第一次创建对象时加载类,并且类加载在当前对象之前，所以static代码块在创建对象之前执行
        Person person = new Person(null);
        System.out.println(person.getAge());
        //默认调用的是person.toString();没有重写方法则打印的是地址。
        System.out.println(person);
    }
}
